#ifndef QUEUELIST_H
#define QUEUELIST_H

//#include <QString>

//typedef void DATATYPE;

//typedef struct __queueList{
//    struct __queueList *next;
//    DATATYPE *data;
//}queueListNode;



//typedef bool (queueListCmp)(void* para1, void *para2);
//typedef void (queueListItemPrint)(void *para);

//using namespace std;

//typedef template <typename T> struct __queueListNode {
//    struct __queueListNode *next;
//    T *data;
//} queueListNode;

//template <typename T>
//typedef struct __queueListNode ;

template <typename T> struct __queueListNode
{
    struct __queueListNode *next;
    T *data;
};

template <class T>
class QueueList {

public:
    inline int size() {
        return listSize;
    };

    inline void insert(int i, T data) {
        listSize++;
    }

private:
    int listSize = 0;


//    template <typename T> struct __queueListNode list;

};

////template <typename T>
//class QueueList{

//public:
//    QueueList();
//    ~QueueList();

//    int getSize();
//    // Inser new data to index position
//    bool Insert(int index, DATATYPE *data);
//    bool Change(int index, DATATYPE *data);
////    // Insert newData after data
////    bool Insert(DATATYPE data, DATATYPE newData);
//    bool InsertToHead(DATATYPE *data);
//    bool InsertToTail(DATATYPE *data);
//    bool append(DATATYPE *data);
//    bool Delete(int index);
//    void Print();
//    DATATYPE *get(int index);

////    queueListCmp *cmpFund;
////    queueListItemPrint *itemPrint;
//private:
//    queueListNode *list;
//    queueListNode *tail;
//    int listSize;
//};
#endif // QUEUELIST_H
